package com.sxj.corejava.code06_lambda表达式;

import java.util.function.Consumer;

/**
 * @author 石小俊
 * @date 2023年12月2023/12/21日 20:24
 */
public class Test02_消费型接口 {

    public static void main(String[] args) {
        // 匿名内部类
        testConsumer(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println("学习开发太困了,喝杯" + s + "咖啡提提神");
            }
        }, "瑞幸");

        // Lambda表达式用法
        testConsumer(s -> System.out.println("编写项目太困了,出去" + s + "提提升"), "抽根烟");
    }

    /**
     * 消费型接口Consumer<T>,接口方法:void accept(T t)
     * 当前接口中的泛型类型与实际调用accept方法的参数类型一致
     * 由于此时并不是真正的方法调用者,该方法会被其他方法调用
     * 因此,accept方法中的参数可以设置为形参
     * 此时,泛型的类型必须与参数的实际参数类型一致
     * @param consumer
     * @param param
     */
    public static void testConsumer(Consumer<String> consumer, String param) {
        consumer.accept(param);
    }
}
